Перейти к основному содержимому

Обновление до версии 0.19.0

Ресурсы

Изменения, нарушающие совместимость

Для пользователей dbt

Обратите внимание на следующие изменения в версии 0.19.0:

  1. Артефакты dbt имеют новую схему. С этого момента схемы артефактов официально версионируются на schemas.getdbt.com. Будущие изменения, нарушающие совместимость, будут ограничены минорными выпусками. Некоторые классы dbt, такие как объект Result, имеют связанные изменения, нарушающие совместимость.
  2. Функция Defer, бета-версия которой была представлена в v0.18.0, изменилась для лучшей поддержки использования "Slim CI".
  3. Блок call statement теперь возвращает структурированный response вместо строки status, хотя они выводятся одинаково. Если вы ранее обращались к statement['status'] в пользовательском макросе или материализации, теперь следует использовать statement['response'].

См. документацию ниже для получения более подробной информации. Мы не ожидаем, что эти изменения потребуют действий в большинстве проектов.

Устаревшие функции

Удалена поддержка config-version: 1 в dbt_project.yml, которая была устаревшей в v0.17.0. Используйте config-version: 2 во всех проектах и установленных пакетах. В противном случае dbt выдаст ошибку. См. документацию по config-version и Руководство по миграции v0.17.0 для получения подробной информации.

Для разработчиков плагинов dbt

(Вы знаете, кто вы!)

Связано с изменением №3 выше: Контекст results и артефакт run_results.json включают новый неструктурированный словарь под названием adapter_response. Это отражает структурированную информацию, возвращаемую базой данных после выполнения dbt "основного" запроса для модели, seed, snapshot и т.д.

По умолчанию этот словарь принимает такие ключи, как code (OK, SUCCESS, CREATE TABLE и т.д.) и rows_affected (целое число). Вы можете добавить пользовательские аргументы для отражения информации, специфичной для вашего адаптера. Например, dbt-bigquery заполняет дополнительный аргумент bytes_processed.

В рамках этого изменения:

  • метод SQLConnectionManager get_status был переименован в get_response
  • execute теперь возвращает кортеж вместо строки

См. dbt#2961 для получения полной информации о реализации. Хотя adapter_response пока не заполняется тестами или проверками свежести источников, мы надеемся добавить это в будущем выпуске (dbt#2964).

Новая и измененная документация

Core

  • Артефакты dbt: артефакты, создаваемые dbt — manifest, catalog, run results и sources — стали проще для использования и более четко документированы.
  • Классы dbt, Контекст on-run-end: Объект Result имеет новую схему, в соответствии с изменениями в run_results.json.
  • Блоки операторов: Результат call statement строки status теперь является структурированным объектом под названием response.
  • Снимки: Если включена конфигурация invalidate_hard_deletes, dbt snapshot обновит записи, уникальный ключ которых больше не существует в запросе снимка. Если такие уникально идентифицированные записи "восстановятся", dbt snapshot добавит их снова.
  • YAML селекторы поддерживают свойство description и фиксируют свои расширенные словарные представления в манифесте.
  • Модули: Модуль regex Python, re, доступен в контексте Jinja dbt.
  • parse: Новая команда для разбора проекта dbt и записи подробной информации о времени выполнения.

Состояние

  • О состоянии: Новая документация, описывающая концептуальную основу запусков, информированных состоянием, а также известные ограничения для сравнения состояний. В v0.19.0 dbt стал немного умнее в идентификации "ложных срабатываний" state:modified, которые ранее возникали из-за конфигураций на основе окружения в dbt_project.
  • Defer изменился: Вместо откладывания всех невыбранных ссылок на узлы, dbt теперь откладывает невыбранную ссылку на узел только в том случае, если она не существует в текущем окружении. Тесты также могут откладывать свои восходящие ссылки. Это лучше поддерживает использование "Slim CI", учитывая ресурсы текущего окружения в шагах seed, run и test.
  • RPC: Добавлены state и defer в качестве аргументов к методам RPC, для которых они поддерживаются в CLI.

BigQuery

  • Профиль BigQuery: dbt может подключаться через OAuth токены (одноразовые или обновляемые), и может использовать проект по умолчанию при подключении через gcloud oauth.
  • Часовые, месячные и годовые разделы: С новым атрибутом granularity конфигурации partition_by, dbt может материализовать модели как таблицы, разделенные по часам, месяцам или годам.

Spark

  • Профиль Spark: Методы подключения thrift и http требуют установки дополнительного пакета PyHive.
0